package cn.edu.hnit.javaee.experiments.experiment02.aop;

import org.aspectj.lang.JoinPoint;

import cn.edu.hnit.javaee.experiments.experiment02.model.Player;

// 将GameLogAspect注册为切面并注入IOC容器中
public class GameLogAspect {
	
	public void pointcut() {}
	
	// 返回通知，对GameServiceImpl中所有方法进行增强
	public String logPlayer(JoinPoint joinPoint) throws Throwable {  
	 	
	      
	   String method = joinPoint.getSignature().getName();
	   // 获取方法参数中的玩家对象（假设第一个参数是Player）  
	   Object[] args = joinPoint.getArgs();  
	   Player player = (Player) args[0];  
	      
	   // 记录日志，例如使用SLF4J或Log4j  
	   String result = String.format("Player %s 触发方法:%s，该方法参数:%s",
	    		player.getNickname(), method, args[1]);
	   System.out.println(result); 
	      
	   return result;  
	}  
	
	// 异常通知，对GameServiceImpl中所有方法进行增强
	public String logPlayerException(JoinPoint joinPoint, Exception ex) {
	   String method = joinPoint.getSignature().getName();
	   // 获取方法参数中的玩家对象（假设第一个参数是Player）  
	   Object[] args = joinPoint.getArgs();  
	   Player player = (Player) args[0]; 
	   // 记录错误日志，例如使用SLF4J或Log4j  
	   String result = String.format("Error：Player %s 触发方法:%s，该方法参数:%s，异常信息为%s",
	    		player.getNickname(), method, args[1],ex.getMessage());
	   System.out.println(result); 
	   return result;
	}
}
